#include <stdio.h>

// 定义函数并放入自定义段 ".my_section"
void custom_function(void) __attribute__((section(".my_section")));
void custom_function(void) {
    printf("Function in custom section executed!\n");
}

// // 定义初始化函数指针类型
// typedef void (*init_func_t)(void);

// // 将函数指针注册到自定义初始化段 ".init_array.my_section"
// #define SECTION_ATTR __attribute__((used, section(".init_array.my_section")))
// init_func_t init_ptr SECTION_ATTR = custom_function;

// // 声明自定义段的起始和结束符号（由链接脚本定义）
// extern init_func_t __my_section_start[];
// extern init_func_t __my_section_end[];

// // 遍历并执行自定义段中的函数
// void __run_custom_init() {
//     if (__my_section_start == NULL || __my_section_end == NULL) {
//         fprintf(stderr, "Custom section not initialized!\n");
//         return;
//     }
//     for (init_func_t *func = __my_section_start; func < __my_section_end; func++) {
//         if (*func != NULL) (*func)(); // 检查函数指针有效性
//     }
// }

// // 在 main 前自动执行初始化
// __attribute__((constructor)) void before_main(void) {
//     __run_custom_init();
// }

int main(void) {
    printf("Main function starts.\n");
    return 0;
}